Don't queue resize for hidden widgets without a size group
authorAlexander Larsson <alexl@redhat.com>
Tue, 4 Dec 2012 15:53:06 +0000 (16:53 +0100)
committerAlexander Larsson <alexl@redhat.com>
Tue, 4 Dec 2012 19:16:44 +0000 (20:16 +0100)
queue_resize basically tells the parent widget that it may need
to pick a different size/layout. However, for a hidden child widget
that should never be needed. It may be that the widget is in a
sizegroup that has ignore_hidden == FALSE though, so it may
affect the size group calculations.

However, if a widget is not visible and not in a size group then
its safe to avoid the resize, as the widget will be resized on
becoming visible anyway.

This avoids a lot of size allocation for hidden things like menus
and tooltips.

gtk/gtkwidget.c

index 9141a707f786cfc1e9ad8479d06b05a31e2b9806..1350af5ec6922658d5155a5a1eb4a56ef3e63e6e 100644 (file)
@@ -4654,7 +4654,9 @@ gtk_widget_queue_resize (GtkWidget *widget)
   if (gtk_widget_get_realized (widget))
     gtk_widget_queue_draw (widget);
 
-  _gtk_size_group_queue_resize (widget, 0);
+  if (gtk_widget_get_visible (widget) ||
+      widget->priv->have_size_groups)
+    _gtk_size_group_queue_resize (widget, 0);
 }
 
 /**